<article>
    <h1><?php echo $GLOBALS['title'] ?></h1>
    <p>MySQL 事务主要用于处理操作量大，复杂度高的数据。比如说，在人员管理系统中，你删除一个人员，你即需要删除人员的基本资料，也要删除和该人员相关的信息，如信箱，文章等等，这样，这些数据库操作语句就构成一个事务！</p>
    <ol>
    	<li>在MySQL中只有使用了Innodb数据库引擎的数据库或表才支持事务</li><p></p>
    	<li>事务处理可以用来维护数据库的完整性，保证成批的SQL语句要么全部执行，要么全部不执行</li><p></p>
    	<li>事务用来管理insert,update,delete语句</li><p></p>
    </ol>
    <p>一般来说，事务是必须满足4个条件（ACID）： Atomicity（原子性）、Consistency（稳定性）、Isolation（隔离性）、Durability（可靠性）</p>
    <ul>
    	<li><code>事务的原子性：</code>一组事务，要么成功；要么撤回。</li><p></p>
    	<li><code>稳定性 </code>： 有非法数据（外键约束之类），事务撤回。</li><p></p>
    	<li><code>隔离性：</code>事务独立运行。一个事务处理后的结果，影响了其他事务，那么其他事务会撤回。事务的100%隔离，需要牺牲速度。</li><p></p>
    	<li><code>可靠性：</code>软、硬件崩溃后，InnoDB数据表驱动会利用日志文件重构修改。可靠性和高速度不可兼得， innodb_flush_log_at_trx_commit选项 决定什么时候吧事务保存到日志里。</li>
    </ul>
    <p><code>注意：</code>如果要使用事务，需要在建表的时间采用Innodb或者对已有的表进行修改</p>
    <pre><code><?php echo htmlspecialchars('mysql>alter table demo engine= innodb;') ?></code></pre>
	<h3>Mysql的工作模式</h3>
	<p>Mysql默认是自动模式，即一条命令执行就马上生效（这一条命令可以看成一个事务）。为了执行事务，应该关闭自动提交，将多个语句组合成一个事务，最后执行提交或回滚操作。</p>
	<h3>开始一个事务</h3>
	<pre><code><?php echo htmlspecialchars('
mysql>start transaction;
mysql>set autocommit=0;//设置为不自动提交，开自动提交set autocommit=1;') ?></code></pre>
	<h3>事务的回滚rollback</h3>
	<pre><code><?php echo htmlspecialchars('
mysql>insert into stu(name) values("学并思");
mysql>insert into stu(name) values("大牛学院");
mysql>rollback;//回滚') ?></code></pre>
	<h3>事务的提交</h3>
<pre><code><?php echo htmlspecialchars('
mysql>insert into stu(name) values("学并思");
mysql>insert into stu(name) values("大牛学院");
mysql>commit;//提交事务') ?></code></pre>
	<h4>注意事项</h4>
	<ul>
		<li>正确的存储引擎才能开启事务</li><p></p>
		<li>记得关闭自动提交</li><p></p>
		<li>记得rollback 或者commit </li>
	</ul>
</article>